#include <stdio.h>
#include <math.h>

//最大素数检查处
const int max_num=10000;
//最大输入数目
const int maxLen=20;

/*
*二分搜索 array[0] 返回0 大于等于array[len-1] 返回len
array[i]<=num<array[i+1] 返回i+1
*/
int ef_search(int array[],int len,int num)
{
    if(len==0||num<array[0])
    {
        return 0;
    }
    if(num>=array[len-1])
    {
        return len;
    }

    int start=0,end=len-1;
    while((end-start)>1)
    {
        int center=(start+end)/2;
        if(num>=array[center])
        {
            start=center;
        }
        else 
        {
            end=center;
        }
    }
    return start+1;
}

int isSs(int array[],int len,int num)
{
    int sqrt_num=(int)sqrt(num);
    //找出素数筛最大搜索的下标
    int index=ef_search(array,len,sqrt_num);
    int flag=1;
    for(int i=0;i<index;i++)
    {
         if(num%array[i]==0)
        {
            flag=0;
            break;
        }
    }
    return flag;
}

int main(){
    int ssArray[max_num];
    //1W以内的素数数目
    int len=1;
    ssArray[0]=2;
    int i,j;
    

    //搜索1W以内的素数 记录下来
    for(i=3;i<=max_num;i++)
    {
        if(isSs(ssArray,len,i))
        {
            ssArray[len]=i;
            len++;
        }
    }

    // for(i=0;i<len;i++)
    // {
    //     printf("%d\n",ssArray[i]);
    // }
	// printf("%d\n",len);

    //输入的数字
    int sr_num[maxLen];
    //遍历的时候记录位置
    int blIndex[maxLen];
    //遍历的时候记录最大位置
    int maxArray[maxLen];
    int n,k;
    scanf("%d %d",&n,&k);
    for(i=0;i<k;i++)
    {
        maxArray[i]=n-k+1+i;
    }
    for(i=0;i<n;i++)
    {
        scanf("%d",&sr_num[i]);
    }

    if(k==0)
    {
        printf("0\n");
    }
    else{
        //遍历结束的标记
        int result=0;

        blIndex[0]=0;
        i=0;
        do{
            while(i<k-1)
            {
                i++;
                blIndex[i]=blIndex[i-1]+1;
            }

            int sum=0;
            for(j=0;j<k;j++)
            {
                sum+=sr_num[blIndex[j]];
            }
            int flag=isSs(ssArray,len,sum);
            if(flag)
            {
                result++;
            }
            
            blIndex[i]++;

            //循环进位
            while(blIndex[i]>=maxArray[i])
            {
                i--;
                if(i<0)
                {
                    break;
                }
                blIndex[i]++;
            }
        }while(blIndex[0]<maxArray[0]);

		printf("%d\n",result);
    }

    
    return 0;
}